2. Alan Turing and Von Neumann
Who initially made the type of computer we use today? During and after World War II, teams in several countries worked to develop electronic computers. Years earlier, British mathematician Alan Turing had described a universal mathematical model in which one machine could carry out any computable procedure by reading an encoded description from its tape. This was an important theoretical precursor to the stored-program computer, although the architecture of practical stored-program machines was later developed through the work of several teams.
"I will find a way to prove Gödel's incompleteness theorems."
In 1928, David Hilbert and Wilhelm Ackermann posed the Entscheidungsproblem: could an algorithm determine whether any statement in first-order logic is valid? Gödel's incompleteness theorems, published in 1931, had already revealed limits in formal systems capable of expressing arithmetic. Turing approached the separate decision problem by defining a precise mathematical model of computation.
Turing submitted "On Computable Numbers, with an Application to the Entscheidungsproblem" in 1936, and it was published in 1937. In it, he described an abstract machine that reads and writes symbols on a long tape according to a finite table of rules. This Turing machine provided a mathematical model of computation and showed that no universal procedure could solve the Entscheidungsproblem[1]. The symbols on its tape could encode both the data being processed and the instructions for processing it, anticipating the relationship between data and software in modern computers.
"Copying these symbols by hand is like copying the program."
During World War II, Turing helped design an improved British Bombe that was used to decipher messages encrypted by the German Enigma machine, making an important contribution to Allied cryptanalysis[2].
Many computing machines built during the war were designed for specific tasks. As the war was nearing its end, however, the United States was developing ENIAC, a general-purpose electronic computer. J. Presper Eckert, John Mauchly, and their team at the University of Pennsylvania began building it in 1943 and completed it in 1946. The U.S. Army initially used ENIAC to calculate artillery firing tables.
Programming ENIAC was very different from programming a modern computer. Instead of loading a program from memory, operators configured switches and connected cables on its plugboards. Running a different program required them to reconfigure the machine. ENIAC weighed about 30 tons, contained roughly 18,000 vacuum tubes, and consumed around 150 kilowatts of power[3].
"Is this really programming?"
"It's a start."
The ENIAC team next began designing EDVAC for the U.S. Army's Ballistic Research Laboratory, making it one of the earliest stored-program computer projects. John von Neumann joined the project as a consultant, and the widely circulated First Draft of a Report on the EDVAC appeared under his name. The design stored instructions and data in the same memory. EDVAC was delivered in 1949 but became fully operational later; meanwhile, the Manchester Baby had run a stored program in 1948.
Most general-purpose computers still use variants of what became known as the von Neumann architecture.
%%{init: {"look": "handDrawn", "theme": "neutral", "themeVariables": {"fontSize": "18.67px"}}}%%
flowchart LR
INPUT["Input Device"]
subgraph COMPUTER["Computer"]
direction TB
subgraph CPU["Central Processing Unit"]
direction TB
CU["Control Unit"]
ALU["Arithmetic/Logic Unit"]
end
MEMORY["Memory Unit"]
CPU <--> MEMORY
end
OUTPUT["Output Device"]
INPUT --> CPU
CPU --> OUTPUT
style COMPUTER fill:#d1d5db,stroke:#6b7280,stroke-width:2px,color:#111111
style CPU fill:#ffffff,stroke:#262626,stroke-width:3px,color:#111111
style CU fill:#e5e7eb,stroke:#262626,stroke-width:2px,color:#111111
style ALU fill:#e5e7eb,stroke:#262626,stroke-width:2px,color:#111111
style MEMORY fill:#ffffff,stroke:#262626,stroke-width:3px,color:#111111
style INPUT fill:#ffffff,stroke:#262626,stroke-width:3px,color:#111111
style OUTPUT fill:#ffffff,stroke:#262626,stroke-width:3px,color:#111111(Adapted from Wikipedia)
As the diagram shows, a basic von Neumann architecture consists of a central processing unit (CPU), memory, and input/output devices. The CPU contains an arithmetic logic unit (ALU), which performs arithmetic and logical operations; processor registers, which hold values needed immediately; and a control unit. The control unit includes registers such as the instruction register and program counter. Memory stores both instructions and data. During the fetch-decode-execute cycle, the CPU retrieves an instruction, interprets it, performs the operation, and stores any result[6].
Britain's National Physical Laboratory obtained von Neumann's EDVAC report in 1945.
"The Americans have already drawn up plans for a stored-program computer!"
The laboratory then asked Turing to design a stored-program computer along the lines of EDVAC. Beginning in 1945, Turing worked on the Automatic Computing Engine (ACE), giving him an opportunity to turn ideas from his theoretical work into a practical computer design.
"We need a computer like EDVAC."
"I have a design of my own."
Although Turing's ACE report, presented in 1946, came after von Neumann's EDVAC report, it contained a detailed design for a stored-program computer. Turing kept the hardware to a minimum and proposed implementing even some arithmetic operations in software. In this respect, ACE anticipated ideas later associated with reduced instruction set computer (RISC) processors. Delays in funding and construction frustrated Turing, and in 1947 he returned to Cambridge on leave before the full ACE could be built[4].
"The design is ready. Why haven't they approved the funding?"
Elsewhere in Britain, Cambridge University's Mathematical Laboratory completed the Electronic Delay Storage Automatic Calculator (EDSAC) in 1949, drawing on the stored-program design described in the EDVAC report. Meanwhile, Turing's ACE design continued to influence work at NPL, which built a smaller version called the Pilot ACE. It ran its first program in 1950.
Alan Turing's 1936 concept of a universal machine was an important theoretical precursor to the stored-program computer. In the United States, John von Neumann, J. Presper Eckert, John Mauchly, and others subsequently contributed to the development of the stored-program architecture through the EDVAC project, while British teams pursued their own implementations. Interestingly, Turing studied for his Ph.D. at Princeton University from 1936 to 1938, while von Neumann was a professor at the nearby Institute for Advanced Study. The two knew one another, and von Neumann, who was familiar with Turing's work on computability, later offered Turing a position. Some historians have therefore suggested that Turing's ideas may have influenced von Neumann's thinking. However, the extent of that influence is uncertain, and von Neumann's 1945 EDVAC report did not cite Turing's 1936 paper.
"Alan, could you tell me more about your universal machine?"
"Of course."
They may have had a conversation like this, though no record of it survives.
During World War II, Britain, Germany, and the United States all developed pioneering computing machines, but the war shaped what happened to them afterward. In Britain, Colossus was built in secret to help break German ciphers. Most Colossus machines were dismantled after the war, and the project remained secret for decades. Germany also produced pioneering computers, including Konrad Zuse's machines, but wartime destruction and Germany's defeat disrupted further development.
"Could we use these machines for other purposes?"
"No. The project must remain secret."
In the United States, immigrants including von Neumann made major contributions alongside engineers, mathematicians, programmers, universities, companies, and government laboratories. Strong government support and a growing commercial market then helped the United States develop the world's largest early computer industry.